package ru.susu.algebra.number;

import java.util.HashMap;
import java.util.Map;

import ru.susu.algebra.operation.IOperation;

/**
 * Поставщик простых чисел, с помощью решета Эратосфена генерирует простые числа в интервале [2..number]
 * и возвращает их в виде отображения prime -> number, которое позволяет по каждому простому числу узнавать
 * его порядковый номер.
 *
 * @author akargapolov
 * @since: 03.05.2010
 */
public class MapPrimeNumbersProvider implements IOperation<Map<Integer, Integer>>
{
	/**
	 * @param sources - source[0] целое число number
	 * @return ассоциативный массив простых чисел {@link Map}
	 */
	@Override
	public Map<Integer, Integer> performOperation(Object... sources)
	{
		Integer[] primes = new PrimeNumbersProvider().performOperation(sources);
		Map<Integer, Integer> result = new HashMap<Integer, Integer>();
		for (int index = 0; index < primes.length; index++)
		{
			result.put(primes[index], index);
		}
		return result;
	}

}
